home *** CD-ROM | disk | FTP | other *** search
- /*
- * Copyright 1992-1993, 1994, Silicon Graphics, Inc.
- * All Rights Reserved.
- *
- * This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics, Inc.;
- * the contents of this file may not be disclosed to third parties, copied or
- * duplicated in any form, in whole or in part, without the prior written
- * permission of Silicon Graphics, Inc.
- *
- * RESTRICTED RIGHTS LEGEND:
- * Use, duplication or disclosure by the Government is subject to restrictions
- * as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data
- * and Computer Software clause at DFARS 252.227-7013, and/or in similar or
- * successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished -
- * rights reserved under the Copyright Laws of the United States.
- */
- //
- // so.c++ - read in an inventor file and return the root node
- //
-
- #include <gl/gl.h>
- #include <Inventor/So.h>
-
- ////////////////////////////////////////////////////////////////////////
- //
- // Description:
- // Read the passed datafile and return the root node.
- //
-
- SoGroup *
- readSceneGraph(const char *filename)
- {
- SoInput in;
- SoNode *node;
- SoGroup *root = NULL;
- SbBool ok;
-
- if (in.openFile(filename))
- {
- root = new SoGroup;
- root->ref();
-
- while ((ok = SoDB::read(&in, node)) != FALSE && node != NULL)
- root->addChild(node);
-
- if (! ok)
- {
- fprintf(stderr, "Error reading Inventor datafile %s",filename);
- exit(0);
- }
-
- if ((root == NULL) || (root->getNumChildren() == 0))
- {
- fprintf(stderr, "No data read from Inventor datafile %s",filename);
- exit(0);
- }
-
- in.closeFile();
-
- return root;
- }
- else
- {
- fprintf(stderr, "Could not open Inventor datafile %s",filename);
- exit(0);
- }
- }
-